package com.cencat.route.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 路线发票统计信息VO
 * 
 * @author cencat
 * @version 1.0
 * @since 2024-01-01
 */
@Data
@Schema(description = "路线发票统计信息")
public class RouteInvoiceStatisticsVO {

    @Schema(description = "总发票数量")
    private Long totalInvoiceCount;

    @Schema(description = "已开票数量")
    private Long issuedInvoiceCount;

    @Schema(description = "待开票数量")
    private Long pendingInvoiceCount;

    @Schema(description = "已作废发票数量")
    private Long cancelledInvoiceCount;

    @Schema(description = "草稿发票数量")
    private Long draftInvoiceCount;

    @Schema(description = "今日新增发票数量")
    private Long todayNewInvoiceCount;

    @Schema(description = "本周新增发票数量")
    private Long weekNewInvoiceCount;

    @Schema(description = "本月新增发票数量")
    private Long monthNewInvoiceCount;

    @Schema(description = "今日开票数量")
    private Long todayIssuedInvoiceCount;

    @Schema(description = "本周开票数量")
    private Long weekIssuedInvoiceCount;

    @Schema(description = "本月开票数量")
    private Long monthIssuedInvoiceCount;

    @Schema(description = "总发票金额")
    private BigDecimal totalInvoiceAmount;

    @Schema(description = "今日发票金额")
    private BigDecimal todayInvoiceAmount;

    @Schema(description = "本周发票金额")
    private BigDecimal weekInvoiceAmount;

    @Schema(description = "本月发票金额")
    private BigDecimal monthInvoiceAmount;

    @Schema(description = "平均发票金额")
    private BigDecimal averageInvoiceAmount;

    @Schema(description = "最高发票金额")
    private BigDecimal maxInvoiceAmount;

    @Schema(description = "最低发票金额")
    private BigDecimal minInvoiceAmount;

    @Schema(description = "总税额")
    private BigDecimal totalTaxAmount;

    @Schema(description = "今日税额")
    private BigDecimal todayTaxAmount;

    @Schema(description = "本周税额")
    private BigDecimal weekTaxAmount;

    @Schema(description = "本月税额")
    private BigDecimal monthTaxAmount;

    @Schema(description = "平均税额")
    private BigDecimal averageTaxAmount;

    @Schema(description = "最高税额")
    private BigDecimal maxTaxAmount;

    @Schema(description = "最低税额")
    private BigDecimal minTaxAmount;

    @Schema(description = "增值税专用发票数量")
    private Long vatSpecialInvoiceCount;

    @Schema(description = "增值税普通发票数量")
    private Long vatOrdinaryInvoiceCount;

    @Schema(description = "电子发票数量")
    private Long electronicInvoiceCount;

    @Schema(description = "纸质发票数量")
    private Long paperInvoiceCount;

    @Schema(description = "3%税率发票数量")
    private Long taxRate3Count;

    @Schema(description = "6%税率发票数量")
    private Long taxRate6Count;

    @Schema(description = "9%税率发票数量")
    private Long taxRate9Count;

    @Schema(description = "13%税率发票数量")
    private Long taxRate13Count;

    @Schema(description = "开票成功率")
    private BigDecimal invoiceSuccessRate;

    @Schema(description = "发票作废率")
    private BigDecimal invoiceCancelRate;

    @Schema(description = "统计时间")
    private LocalDateTime statisticsTime;

}